#include <stdio.h>
#include <stdint.h>

// 函数声明
void checkEndianness();
void pointerArrayDemo();

int main() {
    printf("系统字节序检测:\n");
    checkEndianness();
    
    printf("\n指针数组演示:\n");
    pointerArrayDemo();
    
    return 0;
}

// 检测字节序
void checkEndianness() {
    uint32_t num = 0x12345678;
    uint8_t *p = (uint8_t *)&num;
    
    if (*p == 0x78) {
        printf("系统是小端序 (Little Endian)\n");
    } else {
        printf("系统是大端序 (Big Endian)\n");
    }
    
    printf("内存布局: ");
    for (int i = 0; i < sizeof(num); i++) {
        printf("%02x ", *(p + i));
    }
    printf("\n");
}

// 指针数组演示
void pointerArrayDemo() {
    // 创建指针数组
    const char *strings[5] = {
        "Hello",
        "World",
        "Pointer",
        "Array",
        "Demo"
    };
    
    // 遍历指针数组
    printf("字符串内容:\n");
    for (int i = 0; i < 5; i++) {
        printf("%d: %s (地址: %p)\n", i, strings[i], strings[i]);
    }
    
    // 演示指针数组在不同字节序系统中的行为
    printf("\n指针数组地址分析:\n");
    printf("数组起始地址: %p\n", strings);
    for (int i = 0; i < 5; i++) {
        printf("元素 %d 地址: %p, 存储的指针值: %p\n", 
               i, &strings[i], strings[i]);
    }
}